package cn.jtfadmin.core.modules.sys.domain.dto;

import cn.jtfadmin.base.lang.enums.BooleanEnum;
import cn.jtfadmin.core.enums.MenuTypeEnum;
import cn.jtfadmin.core.enums.OperateTypeEnum;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 系统初始化
 *
 * @author akfh
 * @since 1.0
 */
@Data
public class SysInitPDTO implements Serializable {

    /**
     * 用户名
     */
    protected String username;

    /**
     * 密码
     */
    protected String password;

    /**
     * 权限
     */
    protected List<PermissionInitPDTO> routeMap;

    /**
     * 权限初始化参数
     */
    @Data
    public static class PermissionInitPDTO implements Serializable {
        /**
         * 菜单名称
         */
        protected String name;

        /**
         * 菜单权限编码，例如：“sys:schedule:list,sys:schedule:info”,多个逗号隔开
         */
        protected String perms;


        /**
         * 菜单图标
         */
        protected String icon;

        /**
         * 组件
         */
        protected String component;

        /**
         * 路径
         */
        protected String url;
        /**
         * 一级菜单跳转地址checked against configured
         */
        protected String redirect;


        /**
         * 类型（MENU:菜单 ；PERMISSION：按钮权限）
         */
        protected MenuTypeEnum menuType;


        /**
         * 是否路由菜单: FALSE:不是  TRUE:是 当是菜单时有效
         */
        protected BooleanEnum routeFlag;


        /**
         * 描述
         */
        protected String description;


        /**
         * 是否隐藏路由菜单:  FALSE:不是  TRUE:是， 是否生成菜单，当菜单时有效
         */
        protected BooleanEnum hidden;

        /**
         * 是否keepAlive  FALSE:不是  TRUE:是， 是否生成菜单，当菜单时有效
         */
        protected BooleanEnum keepAlive;

        /**
         * 操作类型， 当菜单时有效
         */
        protected OperateTypeEnum operateType;

        /**
         * children
         */
        protected List<PermissionInitPDTO> children;
    }
}
